{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 决策边界"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "x, y = np.meshgrid(np.arange(1, 2, 0.2), np.arange(2, 3, 0.2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1. , 1.2, 1.4, 1.6, 1.8],\n",
       "       [1. , 1.2, 1.4, 1.6, 1.8],\n",
       "       [1. , 1.2, 1.4, 1.6, 1.8],\n",
       "       [1. , 1.2, 1.4, 1.6, 1.8],\n",
       "       [1. , 1.2, 1.4, 1.6, 1.8]])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[2. , 2. , 2. , 2. , 2. ],\n",
       "       [2.2, 2.2, 2.2, 2.2, 2.2],\n",
       "       [2.4, 2.4, 2.4, 2.4, 2.4],\n",
       "       [2.6, 2.6, 2.6, 2.6, 2.6],\n",
       "       [2.8, 2.8, 2.8, 2.8, 2.8]])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = np.concatenate([x.reshape(-1, 1), y.reshape(-1, 1)], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1. , 2. ],\n",
       "       [1.2, 2. ],\n",
       "       [1.4, 2. ],\n",
       "       [1.6, 2. ],\n",
       "       [1.8, 2. ],\n",
       "       [1. , 2.2],\n",
       "       [1.2, 2.2],\n",
       "       [1.4, 2.2],\n",
       "       [1.6, 2.2],\n",
       "       [1.8, 2.2],\n",
       "       [1. , 2.4],\n",
       "       [1.2, 2.4],\n",
       "       [1.4, 2.4],\n",
       "       [1.6, 2.4],\n",
       "       [1.8, 2.4],\n",
       "       [1. , 2.6],\n",
       "       [1.2, 2.6],\n",
       "       [1.4, 2.6],\n",
       "       [1.6, 2.6],\n",
       "       [1.8, 2.6],\n",
       "       [1. , 2.8],\n",
       "       [1.2, 2.8],\n",
       "       [1.4, 2.8],\n",
       "       [1.6, 2.8],\n",
       "       [1.8, 2.8]])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def height(x):\n",
    "    # 1  2\n",
    "    return np.abs((x[0] - 1) * (x[1] - 2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.04, 0.08, 0.12, 0.16, 0.  ,\n",
       "       0.08, 0.16, 0.24, 0.32, 0.  , 0.12, 0.24, 0.36, 0.48, 0.  , 0.16,\n",
       "       0.32, 0.48, 0.64])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z = np.array([height(x) for x in X])\n",
    "z"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.  , 0.  , 0.  , 0.  , 0.  ],\n",
       "       [0.  , 0.04, 0.08, 0.12, 0.16],\n",
       "       [0.  , 0.08, 0.16, 0.24, 0.32],\n",
       "       [0.  , 0.12, 0.24, 0.36, 0.48],\n",
       "       [0.  , 0.16, 0.32, 0.48, 0.64]])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z = z.reshape(x.shape)\n",
    "z"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.contour(x, y, z)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.contourf(x, y, z, 20, cmap=plt.cm.hot)      #  分20个梯度，热力图\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = np.loadtxt('x.txt')\n",
    "X = X[:, 2:]\n",
    "y = np.loadtxt('y.txt')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[:, 0], X[:, 1], c=y)   # c=y 表示颜色根据 y 的分类值来区别\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_decision_boundary(X, y, predict_fun, step=0.1):\n",
    "    x_min = X[:, 0].min() - 0.5\n",
    "    x_max = X[:, 0].max() + 0.5\n",
    "    y_min = X[:, 1].min() - 0.5\n",
    "    y_max = X[:, 1].max() + 0.5\n",
    "    \n",
    "    x_mesh, y_mesh = np.meshgrid(np.arange(x_min, x_max, step), np.arange(y_min, y_max, step))      # 画网格\n",
    "    labels = predict_fun(np.concatenate([x_mesh.reshape(-1, 1), y_mesh.reshape(-1, 1)], axis = 1))        # 获取预测值\n",
    "    z = labels.reshape(x_mesh.shape)         # 将预测值转为与x_mesh相同的维度\n",
    "    \n",
    "    plt.contourf(x_mesh, y_mesh, z, cmap = plt.cm.Spectral)         # 画梯度图\n",
    "    \n",
    "    plt.scatter(X[:, 0], X[:, 1], c=y)                # 绘制散点图\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "from ML.knn import KNeighborsClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<ML.knn.KNeighborsClassifier at 0x117ca3780>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn_clf = KNeighborsClassifier()\n",
    "knn_clf.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 5min 21s, sys: 2.3 s, total: 5min 23s\n",
      "Wall time: 5min 33s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "plot_decision_boundary(X, y, lambda x: knn_clf.predict(x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "from ML.decision_tree import DecisionTreeClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "d=0, v=2.45, g=0.5, l=None"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt_clf = DecisionTreeClassifier()\n",
    "dt_clf.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_boundary(X, y, lambda x: dt_clf.predict(x), step=0.01)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
